<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dev-C++安装&amp;使用教程 </title>
<style type="text/css">
<!--
.STYLE1 {color: #000033}
.STYLE2 {
	color: #990000;
	font-weight: bold;
}
.STYLE5 {color: #000000; }
body,td,th {
	font-size: medium;
}
.STYLE7 {color: #FF0000}
.STYLE11 {color: #FF0000; font-weight: bold; }
-->
</style>
</head>

<body>
<table width="1100" border="0" align="center">
  <tr>
    <td><h1 align="center" class="STYLE2"><strong><a href="../manual.htm">小龙 Dev-C++ 用户手册</a></strong> </h1>
      <h2 class="STYLE1"><strong>EGE 图形函数库简介</strong> </h2>
      <p>有很多初学者会注意到，在学习 C/C++ 语言的过程中所编写的程序总是单调的黑白文本界面，因此想要编写出图形界面的程序；而在《计算机图形学》课程中，教学重点是绘图算法，也需要良好的绘图编程环境。 </p>
      <p>在早期由 Borland 公司开发的 Turbo C 或 Borland C 中包含有一个名为“<strong>BGI</strong>”的图形函数库，可以用于简便地开发图形界面程序。在当代，也有多个图形函数库可供用户在 C/C++ 程序中编写图形界面。 </p>
      <p><strong>EGE</strong>（Easy Graphics Engine，<a href="https://xege.org/"><u>https://xege.org/</u></a>）是 Windows 下的一个类似于 BGI 的面向 C/C++ 语言新手的免费、开源的图形函数库。它的使用方法与 BGI  相当接近，对新手非常友好，容易学习。即使是之前完全没有接触过图形编程的，也能迅速学会基本的绘图。而且该图形库功能完善，绘图效率高，灵活性强。 </p>
      <p>目前，EGE 图形库已经完美支持微软公司 Visual Studio 集成开发环境（包括且不限于以下版本：VC6、VC2008、VC2010）和以使用 MinGW 为编译器的集成开发环境（包括且不限于：C-Free、 Dev-C++、Code::Blocks、CodeLite、Eclipse for C/C++）。</p>
      <p>在其它集成开发环境中可能需要按照 EGE 网站上的说明进行安装和配置，但是 <strong>小龙 Dev-C++ 5.16 已经在内部集成了 EGE v20.08 （2021年发行）</strong>，在安装了 小龙Dev-C++ 之后就可以在程序中使用 EGE ，不需要用户额外安装和配置。</p>
      <p> 在小龙 Dev-C++ 5.16 中，用户用编写<strong>单文件程序</strong>或以<strong>项目</strong>形式进行多文件开发时都可以使用 EGE 图形函数库。具体方法如下。</p>
      <h2>一、在单文件程序开发中使用 EGE 图形函数库</h2>
      <p><strong>（A）</strong>编写<strong>单文件</strong>程序时（普通编程者都用这种方法），如果需要使用 EGE 图形函数库，请把光标移到源代码头部空白处，然后点击工具栏上的“插入代码块”，
      在弹出的列表中选择点击“EGE header”这一项，于是在光标所在处就插入了如下预处理命令行：</p>
      <p class="STYLE7"><strong>#include &lt;egegraphics.h&gt;  //&lt;graphics.h&gt;<br />
  #pragma comment(lib, &quot;libgraphics64 libuuid libmsimg32 libgdi32&quot;)<br />
  #pragma comment(lib, &quot;libimm32 libole32 liboleaut32 libgdiplus&quot;)<br />
  #pragma comment(linker, &quot;-mwindows&quot;)</strong></p>
      <p>这就是在单文件程序中使用 EGE 所需的预处理命令行。请注意的是，其中用 #include 命令所包含头文件名与 EGE 官方帮助文档中所说的头文件名 graphics.h 
          有所不同。这是小龙 Dev-C++ 中为了避免与其它库文件的头文件名混淆而故意把 graphics.h 改名<span class="STYLE7"><strong> ege</strong></span>graphics.h，
      所以在源程序中需要使用这个改名后的头文件名。 </p>
      <p>上面插入的后面三行预处理命令是用 #pragma comment 命令添加一些函数库和连接参数，以供连接时使用，这也是在单文件源程序中使用 EGE 所需的。
        （EGE 官方帮助文档中并没有直接说到要求这样做，但是在小龙Dev-C++ 中确实需要这行预处理命令。）</p>
      <p>在以上几行预处理命令下方就可以编写自己的程序了。例如下面是一个简单的 main 函数（可供用户测试）：</p>
      <blockquote>
        <p>int main() {<br />
          int width = 900, height = 600;<br />
          initgraph(width, height, !INIT_WITHLOGO); //Init EGE graphic window without logo</p>
        <p> circle(width / 2, height / 2, 200);</p>
        <p> getch();<br />
          closegraph();<br />
          return 0;<br />
          }</p>
      </blockquote>
      <p>在 小龙 Dev-C++ 安装目录下的 Example 文件夹中，包含了几个使用 EGE 的单文件示例程序（它们的程序结构与上面插入的程序块都是类似的）： </p>
      <p>ege-circles.cpp：在屏幕上绘制一系列同心圆（这个程序以少量语句展示了 EGE 的基本用法，可作为 EGE 程序模板使用）</p>
      <p>ege-clock.cpp：在屏幕上绘制模拟指针式时钟，并实时移动指针（展示了EGE的更多用法）。</p>
      <p>ege-FiveStarFlag.cpp：按照国家规范绘制中华人民共和国国旗——五星红旗。 </p>
      <p>ege-Olympic.cpp：在屏幕上绘制奥林匹克五环旗（选择五种颜色并绘制五个圆）</p>
      <p>&nbsp;</p>
      <p><strong>常见问题 1</strong>：在网站上（例如 <a href="https://xege.org/beginner-lesson-2.html" target="_blank">EGE 网站上的新手教程</a>）或其它参考资料上看到一些使用 EGE 进行绘图的源程序，复制粘贴到 小龙Dev-C++ 并保存为源程序文件，编译时就报错“<span class="STYLE7">[错误] graphics.h: 没有这个文件或目录</span>”，怎么解决？</p>
      <p><strong>解答</strong>：要想在程序中使用 EGE 进行绘图，在其它集成开发环境中是要求事先额外安装 EGE 并进行配置，而在 小龙Dev-C++ 中是已经集成了 EGE ，不需要额外安装和配置，但是在程序中必须要写上文所述的预处理命令行。所以，先删除原有的预处理命令行</p>
      <p>#include &lt;graphics.h&gt; </p>
      <p>然后再按上面所述，点击工具栏上的“插入代码块”，
      选择点击“EGE header”，以插入所需的预处理命令行，然后就可以编译运行了。</p>
      <p><strong>常见问题 2 </strong>：在 EGE 官方文档中说到，在 Dev-C++ 中配置 EGE 时，需要手工给连接命令中添加连接参数“ -lgraphics64 -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32 -lgdiplus”。在 小龙Dev-C++ 中还需要这样设置吗？</p>
      <p><strong>解答</strong>：这里有两种处理策略（根据需要任选其一即可）。策略一：如果你只是编写少量几个使用 EGE 的程序，那么最好是在每个程序中按照前述说明插入了预处理命令行，就不需要手工添加连接参数了；策略二：如果你需要编写很多使用 EGE 的程序，那么可以手工给连接命令中添加这些连接参数，并在程序中用 #include 命令包含 &lt;egegraphics.h&gt; 。</p>
      <p>&nbsp;</p>
      <h2 class="STYLE1"><strong>二、建立项目进行多文件程序开发时使用EGE</strong></h2>
      <p class="STYLE1">在小龙 Dev-C++ 中建立<strong>项目</strong>进行多文件程序开发时（只有开发大型程序才这样做），请点击菜单“项目”下的“新建项目”，在所弹出的对话框中，在“多媒体”类别下面有“EGE”项目模板（其主程序的内容与 <span class="STYLE5">ege-circles.cpp</span> 相同）。双击即可创建一个使用 EGE 的项目。</p>
      <p>在项目中实际上有三处针对 EGE 进行了设置（模板中已经设置好了，不需要用户自己处理）：</p>
      <p>(1) 在项目的主程序中写了如下预处理命令行：</p>
      <p>#include  &lt;egegraphics.h&gt;</p>
      <p>(2) 在“项目属性”的“基本”页中，“类型”被设定为“Win32 图形界面程序”；</p>
      <p>(3) 在“项目属性”的“参数”页中，在“连接器”中已经添加了如下参数：</p>
      <p>-lgraphics64 -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32 -lgdiplus -mwindows</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td><div align="center">
      <hr />
      <p>文档编写者联系邮箱：anbangli@foxmail.com</p>
      </div></td>
  </tr>
</table>
<p>&nbsp;	</p>
</body>
</html>
